Field of the Invention
The present invention relates to software testing and more particularly to the regression testing of computer software.
Description of the Related Art
Software functional testing relates to the functional testing of a graphical user interface (GUI) coupled to an underlying software application. Conventional functional testing tools allow the end user to create, modify and run functional, distributed functional, regression and smoke tests for applications built using any of a wide variety of integrated development environments. In this regard, the conventional functional testing tool can generate a test script for a GUI in which elements of the GUI can be exercised both sequentially and conditionally. Through a thorough testing of the GUI of an application, the functional testing tool can automatically identify defects early, often and repeatably.
Operational testing, in comparison to functional testing, refers to the exercise of the logical performance of an application under test. In operational testing, the invocation of an object can be used to compare an expected outcome with an actual outcome from the invocation. Both operational and functional testing can be automated through the use of testing scripts implementing different test cases. Testing scripts can be produced manually and provided as input to a testing engine, or the testing scripts can be generated in an automated fashion.
Regression testing as a form of both functional and operational testing, refers to a type of software testing designed to identify new software coding flaws, errors, failures or faults in an existing application after a change such as enhancement, patch or configuration change has been applied thereto. The intent of regression testing is to ensure that changes to an application have not introduced new faults. Further, regression testing aims to determine whether a change in one part of the application affects another part of the application. Common regression testing methods include re-running previously completed tests and detecting different program behaviors than expected or detecting the re-emergence of previously resolved faults.
Normally during regression testing, once a failure has been detected, the failure either can be ignored or flagged as a failure. Once the failure has been flagged, however, re-execution of the regression test so as to trace the source of the failure is not possible. Instead, the software developer must recreate the testing environment, or the software developer must restart a portion of the test case validation which in turn requires the configuration of the execution environment including product installation and start-up, and the sequential execution of the parts of the test case. Thus, a host of activities may be required in order to execute the relevant test case. Plainly, this can be time consuming.